home *** CD-ROM | disk | FTP | other *** search
/ Chip 1996 October / CHIP Ekim 1996.iso / winbatch / fixes.tx_ < prev    next >
Text File  |  1995-11-02  |  45KB  |  1,154 lines

  1.   **************************************************************************
  2.   IMPORTANT NOTICE:  In the 32-bit version, the following functions, which
  3.   used to return space-delimited lists of items:
  4.  
  5.     DirItemize
  6.     DiskScan
  7.     FileItemize
  8.  
  9.   now return tab-delimited lists.  This can be changed using the new
  10.   IntControl(29).  See "DLL 2.2abh" section below for more information.
  11.  
  12.   --------------------------------------------------------------------------
  13.  
  14.   In the 32-bit version, the following functions work only with 32-bit apps:
  15.  
  16.     AppExist
  17.     AppWaitClose
  18.     WinExeName
  19.  
  20.   See "DLL 2.2abk" section below for more information.
  21.  
  22.   **************************************************************************
  23.  
  24. WinBatch fixes.  Dates indicate disk drop into manufacturing.  Actual ship is often
  25. a week later.  Plans are to reship disk to all customers when product becomes stable
  26.  
  27. 5.0H    Sept 1, 1994
  28.         Initial public release
  29.  
  30. 5.0J    Sept 10, 1994
  31.         Network Extender fixes
  32.  
  33. 5.0K    Sept 19, 1994
  34.         Fixed "Use Older / Use Newer" swap in Confirm Replace dialog
  35.         Fixed problem where \*.* was required on a target directory on
  36.         FileCopy/FileMove functions (Oops See 5.0N)
  37.  
  38. 5.0L    Sept 26, 1994
  39.         Fixed MenuChange function
  40.         Added DiskSize function
  41.         Added \\machine\share capability to DiskFree and DiskSize functions
  42.  
  43.         WinBatch 32 for Intel PCs available
  44.  
  45. 5.0M    Oct 3, 1994
  46.         Fixed TimeDiffSecs function
  47.         Fixed DDERequest memory leak problem
  48.         Started adding this fixes.txt file
  49.  
  50. 5.0N    Oct 10 1994
  51.         Fixed memory leak on Dialog() function when CTL3DV2 was used.
  52.         New n3Logout function in Novell3 extender
  53.         Started adding NEW.HLP file
  54.         Really fixed the \*.* problem.  Previous fix only copied
  55.             the first file.
  56.         Modified the DiskFree, DiskSize, and FileSize functions to
  57.            return a floating point answer if the result is larger than
  58.            about 2 Gigabytes
  59.         Fixed Novell 3 Extenders (DLL10G)
  60.               n3Map fixed to work with ODI drivers
  61.               n3GetMapped
  62.               n3MemberSet
  63.               n3MemberDel
  64.  
  65. 5.0P    Oct 19 1994
  66.         Fixed FileSize for 32bit versions to return the proper answer
  67.         Fixed a bug in StrIndex where a @backscan on a one character
  68.            string would provide an incorrect answer.
  69.         Fixed problem in CopyMove confirm dialog - Cancel works now.
  70.         Fixed problem in CopyMove dialog - missing source file error caught before
  71.            dialog.
  72.         Fixed problem where Dialog function dialog boxes used BUTTON_FACE color
  73.            instead of LTGRAY color.
  74.         Fixed Novell 4 Extenders (DLL10H)
  75.               n4Map (improved)
  76.               n4GetMapped
  77.               n4MemberSet
  78.               n4MemberDel
  79.         Novell DLL's updated from the Novell 11/93 release to the 2/94 release
  80.  
  81.         WinBatch 32 for Dec Alpha and MIPS now available.
  82.  
  83.  
  84.  
  85.  
  86. Actually, its almost pointless to watch the Winbatch version number, as nearly all
  87. the fixes appear in the Dll, which has its own version numbering scheme.  By simply
  88. obtaining a new Dll, the functionality of Winbatch and the WinBatch+Compiler can
  89. be updated.  Henceforth, we will be tracking the DLL version number.  The WinBatch
  90. VersionDll() function will return the DLL version.  This is already built into the
  91. SYSINFO.WBT file.
  92.  
  93. DLL 2.1ebc   Oct 26
  94.         First showing up in WinBatch 5.0Q
  95.         User pointed out problems in the sin and cos routines.  Problem traced to
  96.         what appear to be singularity-type problems in the Microsoft runtime
  97.         cos and sin routines.  The Dll now checks for the bad numbers, and if it is
  98.         in the range where the runtime routines fail, it stuffs in an appropriate
  99.         answer. Fix installed in the 16 bit version only, as the 32 bit versions
  100.         do not seem to have this problem in the runtimes.
  101.  
  102.         Fixed a nit in the dialog editor where, when it was requested to
  103.         display a script, would do so in a dialog box with a "(Unlicensed)"
  104.         in the title.
  105.  
  106.         Fix a parser problem where an error occurred when the first part
  107.         of a variable name matched a function name provided by the calling
  108.         exe program.  This problem first showed up in using a "Dialog1"
  109.         name for a dialog in the Dialog Editor.
  110.  
  111.         Fixed a SendKey to DOS bug where stuff like {UP} did not work when
  112.         the NumLock was set.  Fixed by turning off NumLock when sending
  113.         keystrokes to DOS.
  114.  
  115. DLL 2.1fbc
  116.         Fixed look of Dialog boxes (back to white) when CTL3DV2.DLL is
  117.         not installed on system.
  118.  
  119.         Fixed >very insignificant< problem where if a user did an
  120.         AddExtender for the same DLL twice (or more) only one instance
  121.         of the DLL was freed when the WBT file shut down.
  122.  
  123.         Fixed problem in 32 bit version for Windows'95 where default
  124.         directory was not set properly in =C: environment variable.
  125.         This problem caused wildcarded filenames to be improperly
  126.         resolved into real filenames.
  127.  
  128.         Fixed problem in 16 bit version where DirRemove always
  129.         returned a true, whether or not the directory was deleted.
  130.         If the directory is not deleted, it now returns a suppressable,
  131.         1030 error.
  132.  
  133.  
  134. DLL 2.2abf  First showing up in WB 5.1A
  135.  
  136.         Because of a data structure change to support more binary
  137.         buffers (5 was coded, 10 was documented) the main dll
  138.         renamed to WBDBFxxx.dll
  139.  
  140.         Fixed TimeDiffSecs (again).  If the first date was smaller
  141.         than the second date, the answer could be incorrect.
  142.  
  143.         Fixed a problem in FileAppend where the following code would not
  144.         work properly.
  145.         FileAppend("AAA.*","BBB.TXT")
  146.  
  147.         The DLL now does better <Ctrl-Break> checking.
  148.         SendKey slowed down a minor tad to help other applications out.
  149.  
  150.         32Bit versions will try harder to locate the WIL DLL on startup.
  151.  
  152.         The compiler time check of various DLLS has been removed because
  153.         of assorted problems.  We'll just roll the DLL name instead when
  154.         incompatibilities arise.  The DLL appears to be extremely stable,
  155.         and the bug fixes implemented lately tend to be minor (see above)
  156.  
  157.         A buglet where an ItemInsert on a null string installed a leading
  158.         delimiter before the inserted item - leading to a list with two
  159.         items, the first being null, and the second being the desired item
  160.         - was fixed.  When ItemInsert'ing into a null list, no leading
  161.         delimiter is stuffed in.
  162.  
  163.         A problem with PlayWaveForm where it was not checking the [Sounds]
  164.         section of the WIN.INI file for all possible cases has been fixed.
  165.  
  166.         Fixed a problem with FileCopy/FileMove, where the target was ".."
  167.         and it was a root directory.
  168.  
  169.         DirExist now returns TRUE for hiden and system directories.  It
  170.         also uses an improved method (hopefully) of checking for root
  171.         directories and directories with relative paths (eg, "..\TEMP").
  172.  
  173.         Changed FileExist to return a value of '2' if the specified file
  174.         exists but is currently open by another application in "read-deny"
  175.         mode.  Most of the other file manipulation functions (except
  176.         FileOpen) will cause a sharing violation if they try to access
  177.         such a file.
  178.  
  179.         Fixed problems handling file and directory names containing high
  180.         ANSI characters (>127).
  181.  
  182.         Fixed a problem that occurred if, inside a FOR loop, the user
  183.         changed the increment variable to a string.
  184.  
  185.         Fixed an intermittent problem with performing comparisons of
  186.         negative floating point numbers.
  187.  
  188.         FileFullName now correctly expands "dot" directories
  189.         ("." and "..") in the path name.
  190.  
  191.         Fixed a problem processing lines such as "Gosub %param1%" inside
  192.         conditional structures, when param1 was undefined.
  193.  
  194.         (32-bit version) Fixed some incompatabilities with Windows 95:
  195.             FileAppend
  196.             FileMove
  197.             MsgTextGet
  198.             WinActivate (where the specified parent window had a modal
  199.                child window displayed -- focus was going to the parent
  200.                window instead of to the child window)
  201.  
  202.         Fixed a problem with accessing the DLL if it was located in the
  203.         parent directory and ".." was on the path.
  204.  
  205.         FileCopy, FileMove, and FileAppend now check for sufficient free
  206.         disk space before performing the requested operation, and return
  207.         an error if there is insufficient space, as follows:
  208.  
  209.           1404  FileCopy: Insufficient free space on target drive
  210.           1405  FileMove: Insufficient free space on target drive
  211.           1406  FileAppend: Insufficient free space on target drive
  212.  
  213.  
  214. NetWare 3 extender 12012  First showing up in WB 5.1A
  215.  
  216.   New functions:
  217.  
  218.     n3ServerList(request)
  219.       Returns name of connected server
  220.  
  221.       request:
  222.         0 = all connected servers (tab-delimited list)
  223.         1 = default server
  224.         2 = primary server
  225.  
  226.     n3FileAttrGet(filename)
  227.       Returns NetWare file attributes
  228.  
  229.       filename = a file name, which may include a full path, and which may
  230.       *not* include wildcards.
  231.  
  232.       Returns a number which is the sum of all attributes set for the
  233.       specified file.  Use the bitwise AND operator (&) to determine if a
  234.       specific attribute is set.  See below for a list of attribute
  235.       constants.
  236.  
  237.     n3FileAttrSet(filename, attribs, mode)
  238.       Sets NetWare file attributes
  239.  
  240.       filename = a file name, which may include a full path, and which may
  241.       include wildcards.
  242.  
  243.       attribute is one or more NetWare file attribute constants (see below
  244.       for list).  If multiple attributes are specified, they should be
  245.       combined using the bitwise OR operator.
  246.  
  247.       If mode = @ON,  specified attributes are set.
  248.       If mode = @OFF, specified attributes are removed.
  249.  
  250.       Note: The 'execute-only' attribute cannot be removed.
  251.  
  252.   New constants (used by n3FileAttrGet and n3FileAttrSet):
  253.  
  254.     @attr_Ro     Read-only
  255.     @attr_H      Hidden
  256.     @attr_Sy     System
  257.     @attr_X      eXecute-only
  258.     @attr_A      Archive-needed
  259.     @attr_Sh     Shareable
  260.     @attr_T      Transactional
  261.     @attr_P      Purge
  262.     @attr_Ri     Rename-inhibit
  263.     @attr_Di     Delete-inhibit
  264.     @attr_Ci     Copy-inhibit
  265.     @attr_Dm     Don't migrate
  266.     @attr_Ic     Immediate compress
  267.     @attr_Dc     Don't compress
  268.  
  269.  
  270. NetWare 4 extender 14007  First showing up in WB 5.1A
  271.  
  272.   Changed functions:
  273.  
  274.      n4memberGet(group, user)
  275.      n4memberSet(group, user)
  276.      n4memberDel(group, user)
  277.  
  278.        these functions no longer take a 'server' parameter (they change the
  279.        groups on all servers)
  280.  
  281.   New functions:
  282.  
  283.     n4ServerList(request)
  284.       Returns name of connected server
  285.  
  286.       request:
  287.         0 = all connected servers (tab-delimited list)
  288.         1 = default server
  289.         2 = primary server
  290.         3 = preferred server
  291.  
  292.     n4FileAttrGet(filename)
  293.       Returns NetWare file attributes
  294.  
  295.       filename = a file name, which may include a full path, and which may
  296.       *not* include wildcards.
  297.  
  298.       Returns a number which is the sum of all attributes set for the
  299.       specified file.  Use the bitwise AND operator (&) to determine if a
  300.       specific attribute is set.  See below for a list of attribute
  301.       constants.
  302.  
  303.     n4FileAttrSet(filename, attribs, mode)
  304.       Sets NetWare file attributes
  305.  
  306.       filename = a file name, which may include a full path, and which may
  307.       include wildcards.
  308.  
  309.       attribute is one or more NetWare file attribute constants (see below
  310.       for list).  If multiple attributes are specified, they should be
  311.       combined using the bitwise OR operator.
  312.  
  313.       If mode = @ON,  specified attributes are set.
  314.       If mode = @OFF, specified attributes are removed.
  315.  
  316.       Note: The 'execute-only' attribute cannot be removed.
  317.  
  318.   New constants (used by n4FileAttrGet and n4FileAttrSet):
  319.  
  320.     @attr_Ro     Read-only
  321.     @attr_H      Hidden
  322.     @attr_Sy     System
  323.     @attr_X      eXecute-only
  324.     @attr_A      Archive-needed
  325.     @attr_Sh     Shareable
  326.     @attr_T      Transactional
  327.     @attr_P      Purge
  328.     @attr_Ri     Rename-inhibit
  329.     @attr_Di     Delete-inhibit
  330.     @attr_Ci     Copy-inhibit
  331.     @attr_Dm     Don't migrate
  332.     @attr_Ic     Immediate compress
  333.     @attr_Dc     Don't compress
  334.  
  335.  
  336. WB 5.1C  April 18, 1995
  337.  
  338.         Fixed problem with compiler and compiled WBT's causing a sharing
  339.         violation if the DLL was on a network and not marked read-only.
  340.  
  341.         Fixed problem with compiler and compiled WBT's not finding the DLL
  342.         if it was located in the Windows or Windows System directory.
  343.  
  344.         Fixed problem with large compiled WBT's being unable to extract the
  345.     WIL DLL when run on a disk >= 4 gigabytes in size.
  346.  
  347.         In WILX.DLL extender -- fixed problem with xDriveReady sometimes
  348.         causing a GP fault.
  349.  
  350.  
  351. DLL 2.2abg  First showing up in WB 5.1C
  352.  
  353.         Added two new string constants:
  354.  
  355.           @CR  (13)  carriage return
  356.           @LF  (10)  line feed
  357.  
  358.         Fixed bug in BinaryIndex where it wouldn't find the last character
  359.         in the buffer.
  360.  
  361.  
  362. WB 5.1D  July 18, 1995
  363.  
  364.   WinBatch compiler: for new projects, compiler will use settings (type,
  365.   icon, and extenders) from the last project.
  366.  
  367.  
  368. DLL 2.2abh  First showing up in WB 5.1D
  369.  
  370.   **************************************************************************
  371.   IMPORTANT: File delimiters
  372.   **************************************************************************
  373.  
  374.   In order to support long file names in Windows NT and Windows 95, which
  375.   can contain embedded spaces, we have changed the default file delimiter,
  376.   used to delimit lists of files and directories, to a TAB in the 32-bit
  377.   version of WIL.  In the 16-bit version of WIL, the default delimiter has
  378.   not changed, and remains a space.
  379.  
  380.   Note that this is the "default" file delimiter.  We have added the ability
  381.   to change the file delimiter to a character of your own choosing, using
  382.   the new IntControl 29.  If you are using the 32-bit version of WIL, and
  383.   want to make the file delimiter a space for compatability with existing
  384.   scripts, you can place the following line at the beginning of each of your
  385.   scripts:
  386.  
  387.     IntControl(29, " ", 0, 0, 0)
  388.  
  389.   Conversely, if you want to standardize on a TAB delimiter, you can use:
  390.  
  391.     IntControl(29, @TAB, 0, 0, 0)
  392.  
  393.   Apostrophes (') and back quotes (`) are no longer treated as special
  394.   characters to delimit file names containing spaces.  They are now treated
  395.   as ordinary characters in a file name.
  396.  
  397.   ----------------------------
  398.   Functions which are affected
  399.   ----------------------------
  400.  
  401.   The most important functions affected by this change are:
  402.  
  403.     DirItemize
  404.     DiskScan
  405.     FileItemize
  406.  
  407.   which now return lists delimited by the current file delimiter character.
  408.  
  409.   The following functions, which take file or directory lists as input
  410.   parameters, now expect the lists to be delimited by the current file
  411.   delimiter character.  However, they now also accept lists delimited with a
  412.   TAB or a vertical bar ("|", which may be easier to code in a WIL script):
  413.  
  414.     DirItemize
  415.     DirRemove
  416.     DiskFree
  417.     FileAppend
  418.     FileAttrSet
  419.     FileCopy
  420.     FileDelete
  421.     FileItemize
  422.     FileMove
  423.     FileRename
  424.     FileSize
  425.     FileTimeSet
  426.     FileTimeTouch
  427.  
  428.   Note that DiskFree will continue to accept space-delimited lists as input.
  429.  
  430.   **************************************************************************
  431.  
  432.   New IntControl:
  433.  
  434.     IntControl(29, delimiter, 0, 0, 0)
  435.       Changes the default file delimiter.
  436.  
  437.     The first parameter is the new file delimiter you want to use, and must
  438.     be a single character.  The return value of the function is the previous
  439.     file delimiter character.  If you specify an empty string ("") as the
  440.     first parameter, the function will return the current file delimiter
  441.     character but the file delimiter will not be changed.
  442.  
  443.   Added option to WinMetrics: WinMetrics(-4) will return the Windows
  444.   platform:
  445.  
  446.     0 = Other
  447.     1 = Windows
  448.     2 = Windows for Workgroups
  449.     3 = Win32s
  450.     4 = Windows NT
  451.     5 = Windows 95
  452.  
  453.   In StrSub, you can now specify a length of -1, which will extract the rest
  454.   of the string.
  455.  
  456.   In TimeWait, you can now specify "00:00:00" for the date, which will wait
  457.   for the next occurrence of the specified time (ie, today or tomorrow).
  458.  
  459.   Added support for 3-D Dialog's in Windows NT, if CTL3D32.DLL is present in
  460.   the SYSTEM32 directory.
  461.  
  462.   Fixed TimeAdd so that it doesn't trim out leading zeros in each field.
  463.  
  464.   The Wallpaper function now obeys the tile parameter in Windows 95.
  465.  
  466.   Improved handling of colors in Dialog function.
  467.  
  468.   Added 3D effect to radio buttons and checkboxes in Dialog function.
  469.  
  470.   Fixed problem where if an error occurred in a called WBT, control would go
  471.   to the "Cancel" label in the calling program.
  472.  
  473.   In Dialog and DialogBox, you can now really use IntControl(4) to allow the
  474.   dialog to be closed without selecting a file, even if there is an edit box
  475.   associated with a file listbox.  If you press a pushbutton after changing
  476.   the file mask in an edit box, the listbox will be updated with the new
  477.   mask. But if you press a pushbutton without changing the file mask, the
  478.   dialog will close (and will return a file name of "NOFILESELECTED").
  479.  
  480.   Fixed problem where string variables were not converted properly to
  481.   integers at the beginning of a "For" loop.
  482.  
  483.   Fixed problem where lines that should have been ignored (eg, if they
  484.   followed a Break statement) could cause errors if they contained invalid
  485.   syntax.
  486.  
  487.   If the second parameter of an IntControl(12) statement is "" or "0", any
  488.   previously-set exit message will now be cleared.  Also, you can now
  489.   specify a message beginning with "0".
  490.  
  491.   Fixed problem processing "If" statements with a blank string to the left
  492.   of the equals sign.
  493.  
  494.   Fixed a problem in the 32-bit version where the Dialog function would
  495.   return an invalid file name (garbage characters) if no file was selected.
  496.  
  497.   Improved IsKeyDown processing (especially under Windows 95).
  498.  
  499.   Improved Ctrl-Break checking (especially under Windows 95).
  500.  
  501.   Made WinWaitClose steal less processor time in the 32-bit version.
  502.  
  503.  
  504. WB 5.1E  Aug 3, 1995
  505.  
  506.   In the 32-bit version of WinBatch, it is now possible to run WinBatch
  507.   files whose names contain spaces, by delimiting the file name with
  508.   double quotes on the WinBatch command line.  For example:
  509.  
  510.     WBAT32I "Sample Program.WBT" param1 param2
  511.  
  512.   CallExt now handles file names containing spaces, in 32-bit version.
  513.  
  514.   32-bit version of WinBatch will now run WBT's with file names longer than
  515.   64 characters.
  516.  
  517.   INI settings have been moved from WWW-PROD.INI to the registry, under key:
  518.  
  519.     HKEY_LOCAL_MACHINE\SOFTWARE\Wilson WindowWare\Settings\WWW-PROD
  520.  
  521.  
  522. DLL 2.2abj  First showing up in WB 5.1E
  523.  
  524.   For functions which take a partial window name, you can now specify a
  525.   tilde (~) as the first character of the window name, which will match any
  526.   window containing the specified string anywhere in its title (ie, not
  527.   necessarily at the beginning of the title).  For example, "~Notepad" will
  528.   match a window title of "(Untitled) - Notepad" and a window title of "My
  529.   Notepad Application", as well as a window title of "Notepad - (Untitled)".
  530.   This should prove especially useful under Windows 95.  A '~' at the end of
  531.   the specified window name indicates (as before) that the name must match
  532.   the window title through to the end of the title.  So, "~Notepad~" will
  533.   match a window title of "Notepad" and a window title of "(Untitled) -
  534.   Notepad", but will not match a window title of "Notepad - (Untitled)".
  535.  
  536.   New function:
  537.  
  538.     WinIdGet(partial-winname).
  539.       Returns a unique "Window ID" (pseudo-handle) for the specified window.
  540.  
  541.     The Window ID can subsequently be used with any WIL functions which
  542.     accept a window name as a parameter.  This can be useful to distinguish
  543.     between multiple windows with the same name, or to track a window whose
  544.     title changes.  For example:
  545.  
  546.     Run("notepad.exe", "")
  547.     winid1 = WinIdGet("~Notepad")  ; gets the most-recently-accessed Notepad
  548.     Run("notepad.exe", "")
  549.     winid2 = WinIdGet("~Notepad")  ; gets the most-recently-accessed Notepad
  550.     WinPlace(0, 0, 500, @ABOVEICONS, winid1)
  551.     WinPlace(500, 0, 1000, @ABOVEICONS, winid2)
  552.     WinActivate(winid1)
  553.  
  554.   All functions which accept a partial window name as a parameter now accept
  555.   a Window ID, as obtained from the new WinIdGet function (above).
  556.  
  557.   New functions to manipulate Windows 95 shortcut link files (Windows 95 only):
  558.  
  559.     ShortcutExtra(linkname, description, hotkey, iconpath, iconindex)
  560.       Sets additional information for the specified shortcut file.
  561.         iconindex = 0=based index of desired icon in "iconpath"
  562.  
  563.     ShortcutInfo(linkname)
  564.       Returns information on the specified shortcut file (TAB-delimited):
  565.         path, params, workdir, showmode, desc, hotkey, iconpath, iconindex
  566.  
  567.     ShortcutMake(linkname, pathname, params, workdir, showmode)
  568.       Creates a shortcut for the specified filename.
  569.         showmode = @NORMAL, @ZOOMED, or @ICON
  570.  
  571.   In 32-bit version, Run... commands now support file and directory names
  572.   containing spaces.
  573.  
  574.   In 32-bit version, Run... commands no longer support the undocumented
  575.   method of running a program with a non-standard extension (eg,
  576.   "SSSTARS.SCR") by replacing the period (.) in the file name with an
  577.   asterisk (*).  However, this is no longer necessary, as the Run...
  578.   commands in the 32-bit version can now run such programs directly.
  579.  
  580.   The 32-bit bit version is now able to run Windows 95 shortcut files under
  581.   Windows 95, using any of the Run... functions.  The "Run" mode specified
  582.   in the shortcut file (ie: "Normal window", "Minimized", or "Maximized")
  583.   will always be obeyed, any command-line parameters specified in the
  584.   shortcut's "Target" field will override any parameters passed by the
  585.   Run... function, and a working directory specified in the shortcut's
  586.   "Start in" field will override a working directory parameter in RunShell.
  587.  
  588.   New directory attribute functions:
  589.  
  590.     DirAttrGet(dirname)
  591.       Gets directory attributes (like FileAttrGet)
  592.  
  593.     DirAttrSet(dir-list, settings)
  594.       Sets directory attributes (like FileAttrSet)
  595.  
  596.   FileAttrGet and FileAttrSet now return an error if a directory name is
  597.   specified.  Use the new DirAttrGet and DirAttrSet instead.
  598.  
  599.   New functions (32-bit version only -- the 16-bit version will just return
  600.   the passed file name):
  601.  
  602.     FileNameLong(filename)
  603.       Returns the long version of a filename.
  604.  
  605.     FileNameShort(filename)
  606.       Returns the short (ie, 8.3) version of a filename.
  607.  
  608.   New IntControl (32-bit, Windows NT only):
  609.  
  610.     IntControl(30, "sourcefile", "destination", 0, 0)
  611.       Performs a delayed file move.  The file is not actually moved until
  612.       the operating system is restarted.  This can be useful for replacing
  613.       system files.  "Sourcefile" must be a single file name, with no
  614.       wildcards.  "Destination" may be a file name (which may contain
  615.       wildcards) or a directory name.  The destination file MUST be on the
  616.       same drive as the source file.  If the destination file exists, it
  617.       will be replaced without warning.  "Destination" can also be a NULL
  618.       string (""), in which case the source file will be deleted when the
  619.       operating system is restarted.
  620.  
  621.       Under Windows 95, and in the 16-bit version, this function performs a
  622.       regular (non-delayed) FileMove.
  623.  
  624.       This function returns "1" on success, "2" if it performed a regular
  625.       FileMove instead, and "0" on failure.
  626.  
  627.   New registry functions (32-bit version only):
  628.  
  629.     RegApp(progname, path)
  630.       Creates registration entries for a program under "App Paths".
  631.  
  632.     RegDelValue(handle, subkey-string)
  633.       Removes a named value for the specified subkey from the registry.
  634.         "Subkey-string" must be enclosed in square brackets (see
  635.         RegSetValue).  "Subkey-string" of "[]" deletes the "default" value.
  636.  
  637.   In 32-bit version, PlayMidi function now support file and directory names
  638.   containing spaces.
  639.  
  640.   New function (32-bit version only):
  641.  
  642.     InstallFile(filename, targname, default-targdir, delete-old, flags)
  643.       Installs a file.
  644.  
  645.       "Filename" is the name of the source file to be installed, with
  646.       optional path.
  647.  
  648.       "Targname" is the name of the file to be created.  It may not contain
  649.       a path.  You can specify a blank string (""), in which case the target
  650.       file will have the same name as the source file.
  651.  
  652.       "Default-targdir" is the directory where you want the file to be
  653.       installed.  The file will be installed to this directory, unless it is
  654.       a shared file or a file with the same name already exists elsewhere.
  655.  
  656.       If "Delete-old" is @TRUE (or non-zero), and a file with the same name
  657.       as the file being installed already exists, it will be deleted, even
  658.       if it is located in a directory (on the path) other than the target
  659.       directory.  If "delete-old" is @FALSE, such a file will not be
  660.       deleted.
  661.  
  662.       "Flags" specifies other optional flags that affect the operation of
  663.       this function, combined with the OR ('|') operator.  They are:
  664.  
  665.         1 - shared file (file should be installed to a shared directory)
  666.         2 - force install (install file even if older than existing file)
  667.  
  668.       When installing 32-bit image files (EXE's, DLL's, etc.), this function
  669.       uses the version information embedded in the files to determine
  670.       whether a file being installed is newer than an existing file with the
  671.       same name.  When installing any other type of file, which does not
  672.       contain appropriate version information, this function uses the time
  673.       stamps of the respective files instead.
  674.  
  675.       The return value is in the form:
  676.  
  677.         "result|tempname", or
  678.         "result|"
  679.  
  680.       where "result" is the value returned by the "VerInstallFile" Windows
  681.       API function; and "tempname" is the name of the temporary file that
  682.       was created if the file could not be installed, or blank otherwise.
  683.  
  684.   New function (menu-based implementations only):
  685.  
  686.     CurrFilePath()
  687.       Returns the full path+filename of the currently-selected file.
  688.  
  689.       Like CurrentFile, but returns a full pathname.
  690.  
  691.   New IntControl (32-bit, Windows 95 only):
  692.  
  693.     IntControl(31, 0, 0, 0, 0)
  694.       Returns a tab-delimited list of WinId's for all open Explorer windows.
  695.  
  696.   IntControl(67) and IntControl(68) now work in Windows 95.
  697.  
  698.   DosVersion now returns correct values in Windows 95.
  699.  
  700.   Added new request #'s to WinResources for 32-bit version:
  701.  
  702.     10 - returns a number between 0 and 100 that gives a general idea of
  703.          current memory utilization, in which 0 indicates no memory use and
  704.          100 indicates full memory use.
  705.     11 - total number of bytes of physical memory.
  706.     12 - number of bytes of physical memory available.
  707.     13 - total number of bytes that can be stored in the paging file.  Note
  708.          that this number does not represent the actual physical size of the
  709.          paging file on disk.
  710.     14 - number of bytes available in the paging file.
  711.     15 - total number of bytes that can be described in the user mode
  712.          portion of the virtual address space of the calling process.
  713.     16 - number of bytes of unreserved and uncommitted memory in the user
  714.          mode portion of the virtual address space of the calling process.
  715.  
  716.     The existing request #'s (0-4) will still work, but are not useful on
  717.     32-bit platforms.
  718.  
  719.     It is not possible to determine free system resources in the 32-bit
  720.     version.
  721.  
  722.   Fixed problem with Dialog and DialogBox returning "NOFILESELECTED" even
  723.   if a file was selected, if IntControl(4) was set.
  724.  
  725.   INI settings have been moved from WWW-PROD.INI to the registry, under key:
  726.  
  727.     HKEY_LOCAL_MACHINE\SOFTWARE\Wilson WindowWare\Settings\WWW-PROD
  728.  
  729.  
  730. WB 95B  Sept 7, 1995
  731.  
  732.   New Box functions:
  733.  
  734.     BoxButtonDraw(BoxID, button ID, "text", "rect")
  735.     BoxButtonKill(BoxID, button ID)
  736.     BoxButtonStat(BoxID, button ID)
  737.     BoxCaption(BoxID, caption)
  738.     BoxColor(BoxID, "color", wash color)
  739.     BoxDataClear(BoxID, "tag")
  740.     BoxDataTag(BoxID, "tag")
  741.     BoxDestroy(BoxID)
  742.     BoxDrawCircle(BoxID, "rect", style)
  743.     BoxDrawLine(BoxID, "rect")
  744.     BoxDrawRect(BoxID, "rect", style)
  745.     BoxDrawText(BoxID, "rect", "text", erase flag, alignment)
  746.     BoxesUp("rect", show mode)
  747.     BoxMapMode(BoxID, map mode)
  748.     BoxNew(BoxID, "rect", style)
  749.     BoxPen(BoxID, "color", width)
  750.     BoxTextColor(BoxID, "color")
  751.     BoxTextFont(BoxID, "name", size, style, family)
  752.     BoxUpdates(BoxID, update flag)
  753.  
  754.   The 32-bit WinBatch compiler now allows you to specify an icon for the EXE
  755.   being compiled.
  756.  
  757.  
  758. DLL 2.2abk  First showing up in WB 95B
  759.  
  760.   In the 32-bit version, the Run... functions will look in the registry
  761.   under "App Paths" for the location of the specified program, if you do not
  762.   specify a path for it.
  763.  
  764.   In the 32-bit version, the Run... functions will look in the registry
  765.   under "App Paths" for a "Path" setting for the specified program, and, if
  766.   found, will prepend it to the "PATH" environment variable before running
  767.   the program.
  768.  
  769.   In the 32-bit version, the following functions now work, but only with
  770.   32-bit applications:
  771.  
  772.     AppExist
  773.     AppWaitClose
  774.     WinExeName
  775.  
  776.   In the 32-bit version, AppExist and AppWaitClose are not able to detect
  777.   the existence of 16-bit DOS or Windows applications, and WinExeName will
  778.   return the string "(16-bit application)".
  779.  
  780.   In the 32-bit version under Windows NT, these functions accept (and
  781.   return) module names instead of full program names.  The module name is
  782.   usually the same as the root name of the program, without the extension.
  783.   For example, WinExeName("Program Manager") will return "progman".  With
  784.   AppExist and AppWaitClose, any file extension or path information which is
  785.   part of the 'program-name' parameter is ignored; so, for example,
  786.   AppExist("c:\temp\progman.exe") will return TRUE if Program Manager is
  787.   running, regardless of what directory PROGMAN.EXE is actually located in.
  788.   One exception: WinExeName("") will return a full path to the program
  789.   making the current call to the WIL Interpreter.
  790.  
  791.   BinaryPeekStr, BinaryPokeStr, and BinaryStrCnt now check for (and reject)
  792.   negative parameters.
  793.  
  794.   RunWait now gives up some processor time while it's waiting.
  795.  
  796.   New function (32-bit version only):
  797.  
  798.     WinSysInfo()
  799.       Returns a tab-delimited list of system configuration information:
  800.         computer name of the current system.
  801.         processor architecture.
  802.         page size (specifies granularity of page protection and commitment).
  803.         mask representing the set of processors configured into the system.
  804.         number of processors in the system.
  805.         processor type.
  806.         granularity in which memory will be allocated.
  807.         system's architecture-dependent processor level.
  808.         architecture-dependent processor revision.
  809.  
  810.     This function should be used instead of WinConfig in the 32-bit version.
  811.  
  812.   Additional request #'s for WinMetrics (32-bit version only):
  813.  
  814.     41 TRUE or non-zero if the Microsoft Windows for Pen computing
  815.        extensions are installed; zero, or FALSE, otherwise.
  816.     42 TRUE or non-zero if the double-byte character set (DBCS) version of
  817.        USER.EXE is installed; FALSE, or zero otherwise.
  818.     43 Number of buttons on mouse, or zero if no mouse is installed.
  819.     44 (Win95 only) TRUE if security is present, FALSE otherwise.
  820.     63 (Win95 only) The least significant bit is set if a network is
  821.        present; otherwise, it is cleared.  The other bits are reserved for
  822.        future use.
  823.     67 (Win95 only) Value that specifies how the system was started:
  824.          0 - Normal boot
  825.          1 - Fail-safe boot
  826.          2 - Fail-safe with network boot
  827.        Fail-safe boot (also called SafeBoot) bypasses the user's startup files.
  828.     70 TRUE or non-zero if the user requires an application to present
  829.        information visually in situations where it would otherwise present
  830.        the information only in audible form; FALSE, or zero, otherwise.
  831.     73 (Win95 only) TRUE if the computer has a low-end (slow) processor.
  832.     74 (Win95 only) TRUE if the system is enabled for Hebrew/Arabic languages.
  833.  
  834.     There are a number of other request #'s which can be specified, but are
  835.     of limited usefulness and therefore not documented here.  Details on
  836.     these can be obtained from Win32 programming references, available from
  837.     Microsoft (and others).
  838.  
  839.   New mouse functions:
  840.  
  841.     MouseClick(click-type, modifiers)
  842.       Clicks mouse button(s).
  843.  
  844.       This function performs a mouse click at the current cursor position.
  845.  
  846.       "Modifiers" can be set to 0 if none are desired.
  847.  
  848.         click-type:
  849.           @LCLICK      left click
  850.           @RCLICK      right click
  851.           @MCLICK      middle click
  852.           @LDBLCLICK   left double-click
  853.           @RDBLCLICK   right double-click
  854.           @MDBLCLICK   middle double-click
  855.  
  856.         modifiers (can be OR'ed together with '|'):
  857.           @SHIFT       hold down shift key
  858.           @CTRL        hold down control key
  859.           @LBUTTON     hold down left mouse button
  860.           @RBUTTON     hold down right mouse button
  861.           @MBUTTON     hold down middle mouse button
  862.  
  863.     MouseClickBtn(win-name, child-win, button-text)
  864.       Clicks on the specified button control.
  865.  
  866.       This function clicks on the pushbutton, radio button, or checkbox
  867.       whose text is specified by "button-text".
  868.  
  869.       If the button is located within a top-level window, specify the window
  870.       name in "win-name" and specify a blank string for "child-win".
  871.  
  872.       If the button is located within a child window, specify the top-level
  873.       window name in "win-name" and the child window name in "child-win".
  874.  
  875.     MouseMove(x, y, win-name, child-win)
  876.       Moves the mouse to the specified X-Y coordinates (based on a 1000 x
  877.       1000 screen).
  878.  
  879.       If "win-name" specifies a top-level window and "child-win" is a blank
  880.       string, the specified X-Y coordinates are relative to "win-name".
  881.  
  882.       If "win-name" specifies a top-level window and "child-win" specifies a
  883.       child window of "win-name", the specified X-Y coordinates are relative
  884.       to "child-win".
  885.  
  886.       If "win-name" and "child-win" are both blank strings, the specified X-Y
  887.       coordinates are relative to the Windows desktop.
  888.  
  889.   New constants:
  890.  
  891.     @LBUTTON     left button
  892.     @RBUTTON     right button
  893.     @MBUTTON     middle button
  894.     @LCLICK      left click
  895.     @RCLICK      right click
  896.     @MCLICK      middle click
  897.     @LDBLCLICK   left double-click
  898.     @RDBLCLICK   right double-click
  899.     @MDBLCLICK   middle double-click
  900.  
  901.   Fixed problem where an invalid YmdHms string containing two consecutive
  902.   colons could cause a GP Fault.
  903.  
  904.   In the 32-bit version, AppExist and AppWaitClose will now wait several
  905.   seconds for the specified application to appear.
  906.  
  907.   Fixed problem in menu-based WIL applications where tabs in menu item
  908.   descriptions would be displayed as non-printable "black-box" characters.
  909.  
  910.   Added new request #'s to MouseInfo:
  911.  
  912.     5 - returns mouse coordinates relative to the client area of the window
  913.         under the cursor, in virtual (1000x1000) screen units.
  914.     6 - returns mouse coordinates relative to the client area of the window
  915.         under the cursor, in virtual (1000x1000) client units.
  916.  
  917.   In the 32-bit version, IconReplace now supports 32-bit EXE files.  The
  918.   replacement icon must be the exact same size as the original icon.
  919.  
  920.   New IntControl:
  921.  
  922.     IntControl(32, address, "data type", 0, 0)
  923.       Returns the contents of the memory location specified by "address".
  924.       "Data type" specifies the type of data to be retrieved:
  925.         "BYTE" - returns a byte
  926.         "WORD" - returns a word
  927.         "LONG" - returns a long integer
  928.  
  929.   Fixed WinMetrics(-1) with 32-bit graphics cards.  It was returning -1 for
  930.   these; it now returns 2,147,483,647.
  931.  
  932.  
  933. WB 95C  Oct 10, 1995
  934.  
  935.   New function:
  936.  
  937.     BoxButtonWait()
  938.       Waits for any button in any box to be pressed.
  939.  
  940.   Fixed problem with WinBatch locking up when minimizing a WinBatch box that
  941.   was displaying width-justified text.
  942.  
  943.  
  944. DLL 2.2abl  First showing up in WB 95C
  945.  
  946.   Fixed problem with DirExist returning @FALSE for a UNC which was a root
  947.   directory share on another machine (eg, "\\SERVER\C").
  948.  
  949.   DirMake will now create multi-level directories (eg, "C:\ABC\DEF\GHI").
  950.  
  951.   New functions:
  952.  
  953.     BinaryIndexNc(handle, offset, string, direction)
  954.       Like BinaryIndex, but case-insensitive.
  955.  
  956.     WinItemNameId()
  957.       Returns a list of top-level window names and their "Window ID's", in
  958.       the form:
  959.         "window1-name|window1-ID|window2-name|window2-ID|..."
  960.  
  961.     In the 32-bit version, Delay and TimeDelay functions now accept
  962.     floating point numbers: eg, Delay(0.5).
  963.  
  964.   New function:
  965.  
  966.     ShellExecute(file-name, params, directory, display mode, operation)
  967.       Performs a ShellExecute.
  968.  
  969.       "file-name" is a program or data file to be launched.
  970.  
  971.       "display mode" can be @NORMAL, @ICON, or @ZOOMED.  Or you can specify
  972.       0 to display "file-name" in its default mode.
  973.  
  974.       "operation" is the operation to perform on the file ("Open", "Print",
  975.       etc.), which may or may not correspond to an available "verb" on the
  976.       context menu for the file.  This parameter may be case-sensitive.
  977.       Specify a blank string "" for the file's default operation.
  978.  
  979.       Note: If you use this function to launch a shortcut, and the shortcut
  980.       points to an invalid path, Windows will display a "Missing Shortcut"
  981.       dialog box asking if you wish to update the shortcut.  This would not
  982.       be suitable to use in unattended operation.  Instead, you could use
  983.       one of the Run.. functions to launch the shortcut, which would return
  984.       an error #1932 if the shortcut could not be launched, and this error
  985.       could be trapped using the ErrorMode function.
  986.  
  987.       See also RunShell.
  988.  
  989.   New function (32-bit version only):
  990.  
  991.     RegQueryItem(handle, subkey)
  992.       Returns a tab-delimited list of named data items for the specified
  993.       subkey.
  994.  
  995.   New IntControl:
  996.  
  997.     IntControl(33, p1, 0, 0, 0)
  998.       Controls whether a listbox control in a dialog box allows multiple
  999.       items to be selected.
  1000.  
  1001.         P1  Meaning
  1002.         --  -------
  1003.         0   Single selection
  1004.         1   Multiple selection (default)
  1005.  
  1006.   Improved registry functions in 32-bit version:
  1007.  
  1008.     RegSetValue, RegQueryValue, and RegDelValue:
  1009.  
  1010.       1. Can now specify a named value of [Default] to indicate the primary
  1011.          value for the key (shown in the Registry Editor as "(Default)"); eg:
  1012.  
  1013.            RegSetValue(mykey, "[Default]", "some data")
  1014.  
  1015.       2. Can now specify a subkey string containing a named value; eg:
  1016.  
  1017.            RegSetValue(mykey, "MySubKey[MyItem]", "some data"), or,
  1018.            RegSetValue(mykey, "MySubKey\[MyItem]", "some data")
  1019.  
  1020.   Fixed WaitForKey in the 32-bit version.
  1021.  
  1022.   In the 32-bit version, you can now use the Run... functions to "run" data
  1023.   files (eg, Run("win.ini", "")).
  1024.  
  1025.   FileItemize and DirItemize now handle names containing spaces.
  1026.  
  1027.   In 32-bit version, fixed problem with 3D dialogs not being used under
  1028.   Windows NT.
  1029.  
  1030.  
  1031. WB 95D  Nov 1, 1995
  1032.  
  1033.   Compiler now optimizes WBT's by removing comment lines and whitespace.
  1034.  
  1035.   OLE automation (ObjectOpen and ObjectClose functions) now supported in
  1036.   32-bit version.
  1037.  
  1038.   When a custom icon is specified, the 32-bit compiler now installs it as
  1039.   the icon that is displayed in the Win95 Explorer window, as well as the
  1040.   icon that is shown in the task bar.
  1041.  
  1042.   Fixed a problem with some of the Box functions, where a color or font that
  1043.   was specified in a definition-type command (such as BoxTextColor) would be
  1044.   used for an output-type command (such as BoxDrawText) that preceded it in
  1045.   the command stack, instead of the default color or font being used.
  1046.  
  1047.  
  1048. DLL 2.2abl  First showing up in WB 95D
  1049.  
  1050.   New registry functions (32-bit version only):
  1051.  
  1052.     RegQueryBin(handle, subkey)
  1053.       Retrieves a binary value from the registry.
  1054.         The value is returned as a space-delimited string of hex bytes; eg:
  1055.           "AB 45 3E 01"
  1056.  
  1057.     RegQueryDword(handle, subkey)
  1058.       Retrieves a DWORD value from the registry.
  1059.  
  1060.     RegSetBin(handle, subkey, value)
  1061.       Sets a binary value in the registry.
  1062.         The value is specified as a space-delimited string of hex bytes; eg:
  1063.           "AB 45 3E 01"
  1064.  
  1065.     RegSetDword(handle, subkey, value)
  1066.       Sets a DWORD value in the registry.
  1067.  
  1068.   New date/time functions:
  1069.  
  1070.     TimeJulToYmd(julian-date)
  1071.       Converts the specified Julian date value to a date in YmdHms format.
  1072.         Hms will always be "00:00:00".
  1073.  
  1074.     TimeSubtract(YmdHms1, YmdHms2)
  1075.       Subtracts YmdHms2 from YmdHms1.
  1076.         YmdHms2 can not be larger than YmdHms1.
  1077.  
  1078.   New IntControl's:
  1079.  
  1080.     IntControl(34, p1, 0, 0, 0)
  1081.       Returns the error message string which corresponds to the specified
  1082.       WIL error.
  1083.         p1 = error number.
  1084.  
  1085.     IntControl(35, p1, 0, 0, 0) (32-bit version only)
  1086.       Slows down SendKey.
  1087.         p1 = amount of time to delay between each keypress, in milliseconds
  1088.         (1000 milliseconds = 1 second); 0 = no delay (default).
  1089.       Returns previous delay setting.
  1090.  
  1091.     IntControl(36, p1, p2, 0, 0) (32-bit version only)
  1092.       Waits until an application is waiting for user input.
  1093.         p1 = window name associated with application
  1094.         p2 = timeout, in milliseconds (-1 = no timeout)
  1095.       This function waits until the process which created the specified
  1096.       window has finished its initialization and is waiting for user input
  1097.       with no input pending, or until the specified timeout interval has
  1098.       elapsed.  It can only be used with 32-bit GUI applications.  It
  1099.       returns @TRUE if it has successfully waited, or FALSE if a timeout
  1100.       has occurred (or if it was unable to initiate a wait).
  1101.  
  1102.   In dialog boxes, if you create an EDITBOX field with a variable name that
  1103.   begins with "PW_", it will be treated as a passsword field (ie, asterisks
  1104.   will be echoed instead of the actual characters that the user types).
  1105.  
  1106.   In dialog boxes, file listboxes now use long file names in the 32-bit
  1107.   version under Windows 95.
  1108.  
  1109.   In the DiskScan function, request numbers 8 (CD_ROM) and 16 (RamDisk) are
  1110.   now supported in the 16-bit version.
  1111.  
  1112.   In 32-bit version, added 3D effects to dialog listboxes and edit controls
  1113.   under Windows 95.
  1114.  
  1115.   SendMenusTo now accepts a Window ID for the window name parameter.
  1116.  
  1117.   In 32-bit version, fixed a problem using the Run[] commands to launch a
  1118.   Windows 95 shortcut file.
  1119.  
  1120.   InstallFile function now supported in 16-bit version.
  1121.  
  1122.  
  1123. NetWare 3 extender 12013  First showing up in WB 95D
  1124.  
  1125.   Fixed a problem with n3GetMapped, if the specified server name was also
  1126.   the partial name of another server (eg, if you specified "\\SERVER1" and
  1127.   you also had a server named "\\SERVER10").
  1128.  
  1129.   n3FileAttrGet and n3FileAttrSet can now be used to get and set directory
  1130.   attributes.
  1131.  
  1132.  
  1133. NetWare 4 extender 14010  First showing up in WB 95D
  1134.  
  1135.   Fixed n4Detach function; it now does a full detach, and it now returns
  1136.   @FALSE if it is unable to detach from the monitored connection (ie, from
  1137.   the primary or login server).
  1138.  
  1139.   Fixed a problem with n4GetMapped, if the specified server name was also
  1140.   the partial name of another server (eg, if you specified "\\SERVER1" and
  1141.   you also had a server named "\\SERVER10").
  1142.  
  1143.   n4FileAttrGet and n4FileAttrSet can now be used to get and set directory
  1144.   attributes.
  1145.  
  1146.  
  1147. WB 95E  Nov 2, 1995
  1148.  
  1149.  
  1150. DLL 2.2abm  First showing up in WB 95E
  1151.  
  1152.   In 16-bit version, fixed a problem with DirMake creating a directory name
  1153.   containing high ANSI characters (>127).
  1154.